Enterprises, organizations or government departments and the like usually need an enterprise-level storage system to store various data. In order to avoid potential risks of the enterprises, organizations or government departments, the enterprise-level storage system need have a high availability to minimize downtime of the storage system. In a production environment, the downtime is generally caused by the following two cases. One case is that the system is offline so that the system cannot work completely. For example, during the maintenance window, software or device's firmware is updated to fix some known issue. The other case is that the system is temporarily stuck and is in an unserviceable state, during which, the system or some of its components show a significant performance degradation, which can only provide very bad user experience. Both cases are unacceptable to the business system and need to be prevented as possible.
RAID (Redundant Array of Independent Disks) is usually considered as a good method for the drive level's high availability. RAID combines multiple physical drives into a single logic unit to help improve the availability of a storage system. Yet, the traditional RAID technique and its optimization do not work very well in the production environment, and cannot well support virtual storage and distributed storage applications. Some industry products can solve some issues of RAID, yet from the high level view, they do not have a generic design for different types of drives' high availability.